package cn.houserent.test;

import cn.houserent.dao.HibernateUtil;
import cn.houserent.pojo.Users;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import sun.plugin.dom.exception.HierarchyRequestException;

public class T1 {

    /**
     * 补充输出语句，输出各个阶段对象的状态
     */
    @Test
    public void printObjectState1() {
        Session session = null;
        Transaction tx = null;
        Users user=null;
        try {
            session = HibernateUtil.currentSession();
            // 开始一个事务
            tx = session.beginTransaction();
            // 获取用户对象
            user = (Users) session.load(Users.class, new Integer(1001));
            // 输出对象的状态
            System.out.println("user对象的状态：持久状态");
            // 修改用户信息
            user.setUsername("rose");
            // 输出对象的状态
            System.out.println("user对象的状态：持久状态");
            // 提交事务
            tx.commit();
            // 输出对象的状态
            System.out.println("user对象的状态：游离状态");
        } catch (HibernateException e) {
            e.printStackTrace();
            // 回滚事务
            if (tx != null)
                tx.rollback();
        }
    }

    /**
     * 补充输出语句，输出各个阶段对象的状态
     */
    @Test
    public void printObjectState2() {
        Session session = null;
        Transaction tx = null;
        Users user = null;
        try {
            // 打开session
            session = HibernateUtil.currentSession();
            // 开始一个事务
            tx = session.beginTransaction();
            //  获取用户对象
            user = (Users) session.load(Users.class, new Integer(1000));
            // 输出对象的状态
            System.out.println("user对象的状态：持久状态");
            // 持久化操作
            session.delete(user);
            // 输出对象的状态
            System.out.println("user对象的状态：瞬时状态");
            // 提交事务
            tx.commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            // 回滚事务
            if (tx != null)
                tx.rollback();
        }
    }
}